import axios from 'axios'
import {Toast,Dialog} from 'vant';
import {getToken,removeToken} from "./auth";
const G = window.g // 在static/js/config.js中可以动态的修改后台请求地址

// 创建axios 请求
const service = axios.create({

  baseURL: process.env.VUE_APP_BASE_API, //本机
  changeOrigin: true,
  timeout: 5000 // 请求超时时间
})

// 请求
service.interceptors.request.use(
  config => {

    getToken() && (config.headers.token =getToken());// 判断token如果存在，则每个请求头的header中都加上token
    return config;
  },
  error => {
    // 返回一些错误信息

    return Promise.reject(error)
  }
)

// 响应
service.interceptors.response.use(

  response => {
    const res = response.data;

    //如果状态码不为200 请求失败
    if ((res.code != 200)) {
      Toast({
        message: res.message || 'Error',
        position:'bottom'
      })

      // 401: token认证失败; 50012: 其他已登录的客户端; 50014: Token 过期;
      if (res.code === 401 || res.code === 50012 || res.code === 50014) {
        // 重新登录
        Dialog.alert({
          title: '提示',
          message: '您已经登出，您可以取消留在此页面，或重新登录',
          theme: 'round-button',
        }).then(() => {
          removeToken();
          location.href="/#/login"
        });

      }
      return Promise.reject(new Error(res || 'Error'))
    } else {

      return res
    }
  },
  error => {

    Toast({
      message: error || 'Error',
      position:'bottom'
    })
    return Promise.reject(error)
  }
)

export default service
